In a shared virtualized storage system that runs virtual machines (VMs) on physical servers with varying/heterogeneous input/output (IO) demands, it may be difficult for a hypervisor host to cost-effectively partition and allocate resources of a solid-state drive (SSD) among multiple VMs. For example, an IO hit ratio corresponding to the SSD, when used as a cache for a hard disk drive (HDD) storage pool, may be unacceptably low, and SSD-HDD updating IO costs may be unacceptably high.
Additionally, conventional technologies may assume that a distribution of IO popularity is relatively static, and that the IO popularity, therefore, does not vary significantly over time. Accordingly, conventional technologies may also assume that simply using a lazy, asynchronous approach for SSD-HDD updating is sufficient for keeping operational cost low.
The approach of conventional technologies is to fix spatial granularities (e.g., 1 MB as a size of migration units for updating placement of data blocks between SSD and HDD), and to also fix temporal IO-updating granularities (e.g., a time period of five minutes as an update period). Fixing the temporal and spatial granularities, however, unfortunately cannot fully utilize the benefits of SSD resources when workloads of the VMs frequently change, or when bursty IOs/IO requests occasionally occur in the virtualized file system.